#pragma once
#pragma warning(disable : 4503) // really long variable names... is there a simple way to fix this?

#include <map>
#include <vector>
#include <string>
#include "Enum.h"

class StringLib {
protected:
	std::map<LanguageType, std::map<StringType, std::string>> m_textStrings;
	std::map<LanguageType, std::map<TypeHierarchy, std::map<int, std::vector<std::string>>>> m_objectStrings;
	std::map<LanguageType, std::map<MiscStringType, std::map<int, std::vector<std::string>>>> m_miscStrings;
	LanguageType m_languageType;
	static std::string capitalize(std::string s);
	static std::string checkTokenA(std::string s, std::string name);
public:
	StringLib(LanguageType type);
	~StringLib();
	std::string getTextString(StringType type, ...) const;
	// ORDER: name, description, plural name, ...
	std::string getObjectString(TypeHierarchy category, int type, int index = 0, bool cap = false) const;
	std::string getMiscString(MiscStringType category, int type, int index = 0, bool cap = false) const;
	void setPlayerName(std::string name);
	void setObjectString(TypeHierarchy category, int type, std::string string);
	void setMiscString(MiscStringType category, int type, std::string string);
};
